package com.techblor.wechat.library.util;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * 字符串工具类
 */
public class StringUtil {


    /**
     * 判断传入字符串是否为空(不能判断null字符串)
     *
     * @param value 传入的字符串
     * @return
     */
    public static boolean isEmpty(CharSequence value) {
        return value == null || value.length() == 0;
    }

    /**
     * 判断传入字符串是否不为空(不能判断null值)
     *
     * @param value 传入的字符串
     * @return
     */
    public static boolean isNotEmpty(CharSequence value) {
        return value != null && value.length() > 0;
    }

    /**
     * 是否为空字符串(引号中间有空格)  如： " "。
     * 适用于制表符、换行符、换页符和回车
     *
     * @param value
     * @return
     */
    public static boolean isBlank(CharSequence value) {
        int length;
        if (value == null || (length = value.length()) == 0) {
            return true;
        }

        for (int i = 0; i < length; i++) {
            if (!Character.isWhitespace(value.charAt(i))) {
                return false;
            }
        }

        return true;
    }

    /**
     * 是否不为空字符串(引号中间有空格)  如： " "。
     *
     * @param value
     * @return
     */
    public static boolean isNotBlank(CharSequence value) {
        return !isBlank(value);
    }

    /**
     * 返回将字符串集合转换成以逗号隔开的字符串数据
     *
     * @param list
     * @param separator
     * @return
     */
    public static String join(List<String> list, String separator) {
        if (list == null || list.isEmpty()) {
            return null;
        }

        Iterator<?> iterator = list.iterator();
        if (!iterator.hasNext()) {
            return null;
        }

        Object first = iterator.next();
        if (!iterator.hasNext()) {
            return first.toString();
        } else {
            StringBuilder sb = new StringBuilder(256);
            if (first != null) {
                sb.append(first);
            }

            while (iterator.hasNext()) {
                sb.append(separator);
                Object next = iterator.next();
                if (next != null) {
                    sb.append(next);
                }
            }

            return sb.toString();
        }
    }

    /**
     * 排序并拼接
     *
     * @param value
     * @return
     */
    public static String sortAppend(String... value) {
        Arrays.sort(value);
        StringBuilder builder = new StringBuilder();
        for (String item : value) {
            builder.append(item);
        }

        return builder.toString();
    }
}
